<?php
class PracticesController extends AppController {

	var $name = 'Practices';

    function beforeFilter () {
        parent::beforeFilter();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}
    }
    
	function index() {
		$this->Practice->recursive = 0;
		$this->set('practices', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid practice', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('practice', $this->Practice->read(null, $id));
	}

	function add() {
		if (!empty($this->data)) {
			$this->Practice->create();
			if ($this->Practice->save($this->data)) {
				$this->Session->setFlash(__('The practice has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The practice could not be saved. Please, try again.', true));
			}
		}
//		$Consults = $this->Practice->Consult->find('list');
		$this->set(compact('Consults'));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid practice', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Practice->save($this->data)) {
				$this->Session->setFlash(__('The practice has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The practice could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Practice->read(null, $id);
		}
//		$Consults = $this->Practice->Consult->find('list');
		$this->set(compact('Consults'));
	}

	function find() {
        $this->layout = 'ventana_flotante';

		// Si se realizo una Busqueda
		if (!empty($this->data)) { 

			// Obtengo los datos solicitados con PRECISION EXACTA
			$setDatos = $this->obtenerDatossolr($this->data['Practice']['name']);

			// Si no hubo resultados exactos, extiendo la Busqueda por aproximación
			if(isset($setDatos) AND $setDatos['response']['result']['numFound'] == 0){

				// Obtengo los datos solicitados con PRECISION APROX.
				$setDatos = $this->obtenerDatossolr($this->data['Practice']['name'], true);
			}

			$this->set('ResultadoPracticas', $setDatos);
			$this->set('busquedarealizada', "S");
		}
	}

	function totalpracticas(){

		// Obtengo los datos solicitados
		$setDatos = $this->obtenerDatossolr("*:*");

		$this->autoRender=false;

		return $setDatos['response']['result']['numFound'];
	}

	function obtenerpracticas($txt_busqueda = null) {
		$this->layout = 'ajax';

		// Si se realizo una Busqueda
		if ($txt_busqueda) { 

			// Obtengo los datos solicitados con PRECISION EXACTA
			$setDatos = $this->obtenerDatossolr($txt_busqueda);

			// Si no hubo resultados exactos, extiendo la Busqueda por aproximación
			if(isset($setDatos) AND $setDatos['response']['result']['numFound'] == 0){

				// Obtengo los datos solicitados con PRECISION APROX.
				$setDatos = $this->obtenerDatossolr($txt_busqueda, true);
			}

			$this->set('ResultadoPracticas', $setDatos);
		}
	}

	function obtenerdatossolr($txt_busqueda = null, $activar_cercania = false){

		$this->autoRender=false;

		if ( !empty($txt_busqueda) ) {
			$q = trim($txt_busqueda);
			$sql = "select p.id, p.name
					from practices as p 
					where  p.name LIKE '%$q%'
					order by name ASC;";

			$resultado = $this->Practice->query($sql);	


			if ($resultado){
				$items=array();
				foreach($resultado as $r){	
					$id      = $r['p']['id'];
					$nombre  = ucfirst(strtolower($r['p']['name']));
					$items[] = '{ '.'"id": "'.$id.'", '.'"name": "'.$nombre.'" }';
				} // endoforeach
				$json = "[" . implode( ", ", $items ) . "]";


				return $json;

			}

		} else {
			return "[]";
		}


/*
		if(!$txt_busqueda){
			return array();
		}else{
			if($activar_cercania == true){
				// Agrego caracter ~ al final de cada palabra para habilitar la proximity de la busqueda
				$txt_busqueda = str_replace(" ", "~ ", $txt_busqueda); 
				$txt_busqueda .= "~";
			}else{ // Para el caso de Autocomplete
				$txt_busqueda .= "";
			}


			// Leemos nuestro archivo XML
			$url_solr = 'http://localhost:8080/solr/core1/select?indent=on&version=2.2&q='.urlencode(strtolower($txt_busqueda)).'&fq=cat%3Apracticas&start=0&rows=100000000&fl=id%2Cname%2Cscore&qt=standard&wt=json&explainOther=&hl.fl=';
			$json_content = file_get_contents($url_solr);
			return $json_content;
		}
*/
		
	}
	
}
?>